#include "log.h"
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>


char* filepath = "log.txt";


void logMessage (char *nombre, int32_t pid, int32_t tid, int32_t codigoLog, char *dato, int32_t hayQueLoguear )
{
	if (hayQueLoguear != 1)
		return;

        struct timeval tv; //PARA MILISEGUNDOS
        char fechayhora[80];
        char conversion[25];

        FILE *log = fopen(filepath, "a");

        //CALCULO HORA CON EL FORMATO APROPIADO
        time_t hora = time (NULL);
        struct tm *tmPtr = localtime(&hora);
        strftime( fechayhora, 80, "%H:%M:%S", tmPtr );
        gettimeofday(&tv, NULL); //calcula la hora en ms
        strcat(fechayhora, ".");
        sprintf(conversion, "%ld", tv.tv_usec);
        strncat(fechayhora, conversion, 3);

        char *linea=malloc(strlen(dato) + 300);

        const char *vTipoLog[]={
                "INFO",                                 // 0
                "WARN",                                 // 1
                "ERROR",                                // 2
                "DEBUG"                                 // 3
                };



        strcpy(linea,"[");
        strcat(linea, fechayhora);
        strcat(linea,"][");
        strcat(linea,nombre);
        strcat(linea,"][");
        sprintf(conversion, "%d", pid);
        strcat(linea,conversion);
        strcat(linea,"][");
        sprintf(conversion, "%d", tid);
        strcat(linea,conversion);
        strcat(linea,"]: ");
        strcat(linea, vTipoLog[codigoLog]);
        strcat(linea," : ");
        strcat(linea, dato);
        strcat(linea, "\r\n");
        fputs(linea,  log );
        fclose (log);

        free(linea);
}
